home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / doom / qplus10.zip / ZOMBIE.QC < prev   
Text File  |  1996-07-27  |  21KB  |  526 lines

  1. /*
  2. ==============================================================================
  3.  
  4. ZOMBIE
  5.  
  6. ==============================================================================
  7. */
  8. $cd /raid/quake/id1/models/zombie
  9.  
  10. $origin    0 0 24
  11.  
  12. $base base
  13. $skin skin
  14.  
  15. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8
  16. $frame stand9 stand10 stand11 stand12 stand13 stand14 stand15
  17.  
  18. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10 walk11
  19. $frame walk12 walk13 walk14 walk15 walk16 walk17 walk18 walk19
  20.  
  21. $frame run1 run2 run3 run4 run5 run6 run7 run8 run9 run10 run11 run12
  22. $frame run13 run14 run15 run16 run17 run18
  23.  
  24. $frame atta1 atta2 atta3 atta4 atta5 atta6 atta7 atta8 atta9 atta10 atta11
  25. $frame atta12 atta13
  26.  
  27. $frame attb1 attb2 attb3 attb4 attb5 attb6 attb7 attb8 attb9 attb10 attb11
  28. $frame attb12 attb13 attb14
  29.  
  30. $frame attc1 attc2 attc3 attc4 attc5 attc6 attc7 attc8 attc9 attc10 attc11
  31. $frame attc12
  32.  
  33. $frame paina1 paina2 paina3 paina4 paina5 paina6 paina7 paina8 paina9 paina10
  34. $frame paina11 paina12
  35.  
  36. $frame painb1 painb2 painb3 painb4 painb5 painb6 painb7 painb8 painb9 painb10
  37. $frame painb11 painb12 painb13 painb14 painb15 painb16 painb17 painb18 painb19
  38. $frame painb20 painb21 painb22 painb23 painb24 painb25 painb26 painb27 painb28
  39.  
  40. $frame painc1 painc2 painc3 painc4 painc5 painc6 painc7 painc8 painc9 painc10
  41. $frame painc11 painc12 painc13 painc14 painc15 painc16 painc17 painc18
  42.  
  43. $frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8 paind9 paind10
  44. $frame paind11 paind12 paind13
  45.  
  46. $frame paine1 paine2 paine3 paine4 paine5 paine6 paine7 paine8 paine9 paine10
  47. $frame paine11 paine12 paine13 paine14 paine15 paine16 paine17 paine18 paine19
  48. $frame paine20 paine21 paine22 paine23 paine24 paine25 paine26 paine27 paine28
  49. $frame paine29 paine30
  50.  
  51. $frame cruc_1 cruc_2 cruc_3 cruc_4 cruc_5 cruc_6
  52.  
  53. float    SPAWN_CRUCIFIED    = 1;
  54.  
  55. //=============================================================================
  56.  
  57. .float inpain;
  58.  
  59. void() zombie_stand1    =[    $stand1,        zombie_stand2    ] {ai_stand();};
  60. void() zombie_stand2    =[    $stand2,        zombie_stand3    ] {ai_stand();};
  61. void() zombie_stand3    =[    $stand3,        zombie_stand4    ] {ai_stand();};
  62. void() zombie_stand4    =[    $stand4,        zombie_stand5    ] {ai_stand();};
  63. void() zombie_stand5    =[    $stand5,        zombie_stand6    ] {ai_stand();};
  64. void() zombie_stand6    =[    $stand6,        zombie_stand7    ] {ai_stand();};
  65. void() zombie_stand7    =[    $stand7,        zombie_stand8    ] {ai_stand();};
  66. void() zombie_stand8    =[    $stand8,        zombie_stand9    ] {ai_stand();};
  67. void() zombie_stand9    =[    $stand9,        zombie_stand10    ] {ai_stand();};
  68. void() zombie_stand10    =[    $stand10,        zombie_stand11    ] {ai_stand();};
  69. void() zombie_stand11    =[    $stand11,        zombie_stand12    ] {ai_stand();};
  70. void() zombie_stand12    =[    $stand12,        zombie_stand13    ] {ai_stand();};
  71. void() zombie_stand13    =[    $stand13,        zombie_stand14    ] {ai_stand();};
  72. void() zombie_stand14    =[    $stand14,        zombie_stand15    ] {ai_stand();};
  73. void() zombie_stand15    =[    $stand15,        zombie_stand1    ] {ai_stand();};
  74.  
  75. void() zombie_cruc1    =    [    $cruc_1,        zombie_cruc2    ] {
  76. if (random() < 0.1)
  77.     sound (self, CHAN_VOICE, "zombie/idle_w2.wav", 1, ATTN_STATIC);};
  78. void() zombie_cruc2    =    [    $cruc_2,        zombie_cruc3    ] {self.nextthink = time + 0.1 + random()*0.1;};
  79. void() zombie_cruc3    =    [    $cruc_3,        zombie_cruc4    ] {self.nextthink = time + 0.1 + random()*0.1;};
  80. void() zombie_cruc4    =    [    $cruc_4,        zombie_cruc5    ] {self.nextthink = time + 0.1 + random()*0.1;};
  81. void() zombie_cruc5    =    [    $cruc_5,        zombie_cruc6    ] {self.nextthink = time + 0.1 + random()*0.1;};
  82. void() zombie_cruc6    =    [    $cruc_6,        zombie_cruc1    ] {self.nextthink = time + 0.1 + random()*0.1;};
  83.  
  84. void() zombie_walk1        =[    $walk1,        zombie_walk2    ] {ai_walk(0);};
  85. void() zombie_walk2        =[    $walk2,        zombie_walk3    ] {ai_walk(2);};
  86. void() zombie_walk3        =[    $walk3,        zombie_walk4    ] {ai_walk(3);};
  87. void() zombie_walk4        =[    $walk4,        zombie_walk5    ] {ai_walk(2);};
  88. void() zombie_walk5        =[    $walk5,        zombie_walk6    ] {ai_walk(1);};
  89. void() zombie_walk6        =[    $walk6,        zombie_walk7    ] {ai_walk(0);};
  90. void() zombie_walk7        =[    $walk7,        zombie_walk8    ] {ai_walk(0);};
  91. void() zombie_walk8        =[    $walk8,        zombie_walk9    ] {ai_walk(0);};
  92. void() zombie_walk9        =[    $walk9,        zombie_walk10    ] {ai_walk(0);};
  93. void() zombie_walk10    =[    $walk10,    zombie_walk11    ] {ai_walk(0);};
  94. void() zombie_walk11    =[    $walk11,    zombie_walk12    ] {ai_walk(2);};
  95. void() zombie_walk12    =[    $walk12,    zombie_walk13    ] {ai_walk(2);};
  96. void() zombie_walk13    =[    $walk13,    zombie_walk14    ] {ai_walk(1);};
  97. void() zombie_walk14    =[    $walk14,    zombie_walk15    ] {ai_walk(0);};
  98. void() zombie_walk15    =[    $walk15,    zombie_walk16    ] {ai_walk(0);};
  99. void() zombie_walk16    =[    $walk16,    zombie_walk17    ] {ai_walk(0);};
  100. void() zombie_walk17    =[    $walk17,    zombie_walk18    ] {ai_walk(0);};
  101. void() zombie_walk18    =[    $walk18,    zombie_walk19    ] {ai_walk(0);};
  102. void() zombie_walk19    =[    $walk19,    zombie_walk1    ] {
  103. ai_walk(0);
  104. if (random() < 0.2)
  105.     sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_IDLE);};
  106.  
  107. void() zombie_run1        =[    $run1,        zombie_run2    ] {ai_run(1);self.inpain = 0;};
  108. void() zombie_run2        =[    $run2,        zombie_run3    ] {ai_run(1);};
  109. void() zombie_run3        =[    $run3,        zombie_run4    ] {ai_run(0);};
  110. void() zombie_run4        =[    $run4,        zombie_run5    ] {ai_run(1);};
  111. void() zombie_run5        =[    $run5,        zombie_run6    ] {ai_run(2);};
  112. void() zombie_run6        =[    $run6,        zombie_run7    ] {ai_run(3);};
  113. void() zombie_run7        =[    $run7,        zombie_run8    ] {ai_run(4);};
  114. void() zombie_run8        =[    $run8,        zombie_run9    ] {ai_run(4);};
  115. void() zombie_run9        =[    $run9,        zombie_run10    ] {ai_run(2);};
  116. void() zombie_run10        =[    $run10,        zombie_run11    ] {ai_run(0);};
  117. void() zombie_run11        =[    $run11,        zombie_run12    ] {ai_run(0);};
  118. void() zombie_run12        =[    $run12,        zombie_run13    ] {ai_run(0);};
  119. void() zombie_run13        =[    $run13,        zombie_run14    ] {ai_run(2);};
  120. void() zombie_run14        =[    $run14,        zombie_run15    ] {ai_run(4);};
  121. void() zombie_run15        =[    $run15,        zombie_run16    ] {ai_run(6);};
  122. void() zombie_run16        =[    $run16,        zombie_run17    ] {ai_run(7);};
  123. void() zombie_run17        =[    $run17,        zombie_run18    ] {ai_run(3);};
  124. void() zombie_run18        =[    $run18,        zombie_run1    ] {
  125. ai_run(8);
  126. if (random() < 0.2)
  127.     sound (self, CHAN_VOICE, "zombie/z_idle.wav", 1, ATTN_IDLE);
  128. if (random() > 0.8)
  129.     sound (self, CHAN_VOICE, "zombie/z_idle1.wav", 1, ATTN_IDLE);
  130. };
  131.  
  132. /*
  133. =============================================================================
  134.  
  135. ATTACKS
  136.  
  137. =============================================================================
  138. */
  139.  
  140. void() ZombieGrenadeTouch =
  141. {
  142.     if (other == self.owner)
  143.         return;        // don't explode on owner
  144.     if (other.takedamage)
  145.     {
  146.         T_Damage (other, self, self.owner, 10 );
  147.         sound (self, CHAN_WEAPON, "zombie/z_hit.wav", 1, ATTN_NORM);
  148.         remove (self);
  149.         return;
  150.     }
  151.     sound (self, CHAN_WEAPON, "zombie/z_miss.wav", 1, ATTN_NORM);    // bounce sound
  152.     self.velocity = '0 0 0';
  153.     self.avelocity = '0 0 0';
  154.     self.touch = SUB_Remove;
  155. };
  156.  
  157. /*
  158. ================
  159. ZombieFireGrenade
  160. ================
  161. */
  162. void(vector st) ZombieFireGrenade =
  163. {
  164.     local    entity missile, mpuff;
  165.     local    vector    org;
  166.  
  167.     sound (self, CHAN_WEAPON, "zombie/z_shot1.wav", 1, ATTN_NORM);
  168.  
  169.     missile = spawn ();
  170.     missile.owner = self;
  171.     missile.movetype = MOVETYPE_BOUNCE;
  172.     missile.solid = SOLID_BBOX;
  173.  
  174. // calc org
  175.     org = self.origin + st_x * v_forward + st_y * v_right + (st_z - 24) * v_up;
  176.     
  177. // set missile speed    
  178.  
  179.     makevectors (self.angles);
  180.  
  181.     missile.velocity = normalize(self.enemy.origin - org);
  182.     missile.velocity = missile.velocity * 600;
  183.     missile.velocity_z = 200;
  184.  
  185.     missile.avelocity = '3000 1000 2000';
  186.  
  187.     missile.touch = ZombieGrenadeTouch;
  188.     
  189. // set missile duration
  190.     missile.nextthink = time + 2.5;
  191.     missile.think = SUB_Remove;
  192.  
  193.     setmodel (missile, "progs/zom_gib.mdl");
  194.     setsize (missile, '0 0 0', '0 0 0');        
  195.     setorigin (missile, org);
  196. };
  197.  
  198.  
  199. void() zombie_atta1        =[    $atta1,        zombie_atta2    ] {ai_face();};
  200. void() zombie_atta2        =[    $atta2,        zombie_atta3    ] {ai_face();};
  201. void() zombie_atta3        =[    $atta3,        zombie_atta4    ] {ai_face();};
  202. void() zombie_atta4        =[    $atta4,        zombie_atta5    ] {ai_face();};
  203. void() zombie_atta5        =[    $atta5,        zombie_atta6    ] {ai_face();};
  204. void() zombie_atta6        =[    $atta6,        zombie_atta7    ] {ai_face();};
  205. void() zombie_atta7        =[    $